package com.xingchi.tornado.storage.core.service;

import com.xingchi.tornado.mybatisplus.service.BasePlusService;
import com.xingchi.tornado.storage.core.model.dto.FileUserRelDTO;
import com.xingchi.tornado.storage.core.model.dto.FileUserRelQueryDTO;

/**
 * <p>
 * 用户文件关联表 服务类
 * </p>
 *
 * @author xingchi
 * @date 2024-05-04 20:02
 */
public interface FileUserRelService extends BasePlusService<FileUserRelDTO, FileUserRelQueryDTO> {

    /**
     * 根据sha256判断文件是否存在
     *
     * @param sha256 sha256
     * @return 是否存在
     */
    boolean exists(String sha256);

    /**
     * 重新构建或获取UserFileRelDTO，用于分片上传
     *  1、如果不存在文件信息（FileDTO）则抛错
     *  2、如果存在文件信息，同时存在用户文件关联表，则返回用户文件关联表
     *  3、如果存在文件信息，但是不存在用户文件关联表，则构建用户文件关联表并返回
     *
     * @param sha256    文件sha256
     * @return  用户文件关联表
     */
    FileUserRelDTO rebuildOrGetUserFileRelDTO(String sha256);
}
